const express = require('express');
const router = express.Router();
const Product = require('../models/Product'); // 引入商品模型

// 1. 获取商品列表（可分页） - GET /api/products
router.get('/', async (req, res) => {
  try {
    const { page = 1, limit = 10, category, type } = req.query;
    const query = {};
    if (category) query.category = category;
    if (type) query.type = type;

    const total = await Product.countDocuments(query);
    const products = await Product.find(query)
      .skip((page - 1) * limit)
      .limit(limit);

    res.json({
      success: true,
      data: {
        total,
        page: Number(page),
        limit: Number(limit),
        list: products
      }
    });
  } catch (err) {
    res.status(500).json({ success: false, message: '服务器错误', error: err.message });
  }
});

// 2. 获取商品详情 - GET /api/products/{productId}
router.get('/:productId', async (req, res) => {
  try {
    const product = await Product.findById(req.params.productId);
    if (!product) {
      return res.status(404).json({ success: false, message: '商品不存在' });
    }
    res.json({ success: true, data: product });
  } catch (err) {
    res.status(500).json({ success: false, message: '服务器错误', error: err.message });
  }
});

// 3. 添加商品（管理员） - POST /api/products
router.post('/', async (req, res) => {
  try {
    const newProduct = new Product(req.body);
    await newProduct.save();
    res.status(201).json({ success: true, message: '商品添加成功', data: newProduct });
  } catch (err) {
    res.status(400).json({ success: false, message: '参数错误', error: err.message });
  }
});

// 4. 修改商品（管理员） - PUT /api/products/{productId}
router.put('/:productId', async (req, res) => {
  try {
    const product = await Product.findByIdAndUpdate(
      req.params.productId,
      req.body,
      { new: true, runValidators: true }
    );
    if (!product) {
      return res.status(404).json({ success: false, message: '商品不存在' });
    }
    res.json({ success: true, message: '商品更新成功', data: product });
  } catch (err) {
    res.status(400).json({ success: false, message: '参数错误', error: err.message });
  }
});

// 5. 删除商品（管理员） - DELETE /api/products/{productId}
router.delete('/:productId', async (req, res) => {
  try {
    const product = await Product.findByIdAndDelete(req.params.productId);
    if (!product) {
      return res.status(404).json({ success: false, message: '商品不存在' });
    }
    res.json({ success: true, message: '商品删除成功' });
  } catch (err) {
    res.status(500).json({ success: false, message: '服务器错误', error: err.message });
  }
});

module.exports = router;